// 需求 ： 封装一个方法，通过 【读取路径】 读取文件，得到内容。
const fs = require('fs');
const path = require('path');


// 这是普通的读取文件的方式
/*fs.readFile(path.join(__dirname, './files/1.txt'), 'utf-8',(err,dataStr) => {
    if(err) throw err
    console.log(dataStr);
});*/

//-> 封装一个读取路径文件的方法
/*function getDataByPath(filePath){
    fs.readFile(filePath, 'utf-8',(err,dataStr) => {
        if(err) throw err
        return dataStr;
    });
}

var result = getDataByPath(path.join(__dirname, './files/1.txt'));
console.log(result);*/

// 注意  这个结果是  undefined；为什么呢？ 因为读文件 fs.readFile 这个方法是异步执行的； 
//所以在函数体内会把这个异步程序放进队列里边等待，暂时不执行。而这个函数本身没有 return ；所以是undefined；

/*function getDataByPath(filePath,callback){
    fs.readFile(filePath, 'utf-8',(err,dataStr) => {
        if(err) throw err
        callback(dataStr);
    });
}

getDataByPath(path.join(__dirname, './files/1.txt'),function (dataStr) {console.log(dataStr)});*/

// 引入回调函数 就可以输出异步函数中的结果了；但是还是不够，需要错误的时候执行一个方法，正确的时候执行一个方法

function getDataByPath(filePath,errorFn,successFn){
    fs.readFile(filePath, 'utf-8',(err,dataStr) => {
        if(err) errorFn(err);
        successFn(dataStr);
    });
}

getDataByPath(path.join(__dirname, './files/1.txt'),function(data1){console.log(data1 + '数据不存在')},function(data2){console.log(data2);});

// 这样看起来才算是比较圆满

